#include <iostream>
#include <vector>
#include "BinarySearchTree.h"
#include<ctime> //计时

 
using namespace std;

//编写一个函数以二叉搜索树T和两个有序的关键字k1和k2作为输入，其中k<=k2, 并打印树中所有满足k1<=Key(X)<=k2的元素X
//除去可以被排序外, 不对关键词类型作任何假设.
//所写的程序应该以平均时间O(K+logN)运行, 其中K是打印关键词的个数
//确定该算法的运行时间界

int main()
{   
    vector<double> num;
    int scale;
    cout << "请输入AVL树的大小scale:";
    cin >> scale;
    int k1 = scale/2-50000;
    int k2 = scale/2+50000;

        BinarySearchTree<int> bst;

    //------------------------------------------生成一个规模为scale的AVL树
        bst.buildAVL(scale);
    //-----------------------------------------二叉搜索树范围内排序
    
    
        clock_t startTime = clock();   //测试程序的起始时间

        bst.Searching_Print(k1, k2);  //搜索排序，计时部分

        clock_t endTime = clock();    //测试程序的结束时间
        num.push_back(double(endTime - startTime) / CLOCKS_PER_SEC);
        cout << double(endTime - startTime) / CLOCKS_PER_SEC  << endl;
        bst.~BinarySearchTree();
    
    /*
    double sum = 0;
    for (auto i:num){
        sum+=i;
    }
    cout << sum/num.size();
    */
    return 0;
}
